<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lang="zh" xml:lang="zh">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>概念: 迭代</title>
<meta content="Concept" name="uma.type">
<meta content="iteration" name="uma.name">
<meta content="迭代" name="uma.presentationName">
<meta name="element_type" content="concept">
<meta content="description" name="filetype">
<meta name="role" content="">
<link type="text/css" href="./../../../css/default.css" rel="StyleSheet">
<script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageResource.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSubSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageToolbar.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/contentPage.js"></script><script language="JavaScript" type="text/javascript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=[{view: "view:_LVCagP5WEdmAzesbYywanQ", path: ["_LVCagP5WEdmAzesbYywanQ", "_4U33kAILEdq-_NKqZM1EhA", "_nB0hwAITEdqu-LkyOdB8SQ", "_yeA1y9nmEdmO6L4XMImrsA", "3.379871268737602E-305"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_kC0pcN7GEdm8G6yT7-Wdqw", "_yeA1y9nmEdmO6L4XMImrsA", "3.379871268737602E-305"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_jD8dUAIbEdqEutyfYo0quQ", "_vzRNgDIcEdqDs_9ORT1Rig", "3.379871268737602E-305"]}];
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="3.379871268737602E-305"></div>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap="true" class="pageTitle">概念：迭代</td><td width="100%">
<div id="contentPageToolbar" align="right"></div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td class="pageTitleSeparator"><img height="1" title="" alt="" src="./../../../images/shim.gif"></td>
</tr>
</table>
<div class="overview">
<table cellpadding="0" cellspacing="0" border="0" width="97%">
<tr>
<td width="50"><img title="" alt="" src="./../../../images/concept.gif"></td><td>
<table cellpadding="0" cellspacing="0" border="0" class="overviewTable">
<tr>
<td valign="top">此指导信息描述在软件开发中最常见的“迭代”的基本概念及其用途。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">关系</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<th scope="row" class="sectionTableHeading">相关元素</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.base_rup/disciplines/rup_project_management_discipline_F303DA84.html" guid="_yeA1y9nmEdmO6L4XMImrsA">项目管理</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">主要描述</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<td class="sectionTableSingleCell"><a id="Top" name="Top"></a><a id="XE_project_lifecycle__introduction_to" name="XE_project_lifecycle__introduction_to" class="index" key="项目生命周期（project lifecycle）" text="简介"></a> 
<h3>
    <a id="What is an iteration" name="What is an iteration">什么是迭代？</a>
</h3>
<p>
    迭代包含开发活动，这些活动产生产品<b>发行版</b> －
    一个稳定、可执行的产品版本，包括使用此发行版必需的所有其他外围元素。因此在某种意义上，开发迭代是至少通过以下所有规程的完整过程：需求、分析与设计、实施和测试。它本身很像一个小型的瀑布式项目。请注意，在计划每次迭代时建立评估条件。发行版将计划可论证的功能。迭代的持续时间将随项目规模和性质的不同而不同，但可能
    <b>每个</b>迭代中都将构造<b>多个</b><a class="elementLinkWithUserText" href="./../../../core.base_rup/workproducts/rup_build_BA336272.html" guid="{53728CD9-FA47-4B58-A443-E9F9DC196916}">工作版本</a>，如<a class="elementLinkWithUserText" href="./../../../core.base_rup/workproducts/rup_integration_build_plan_31CE4B79.html" guid="{FA56B557-857D-4122-8E60-7A4A84418EB1}">集成构建计划</a>中对迭代所指定的。这是 Rational Unified
    Process（RUP）中建议的持续集成方法的结果：当单元测试的组件可用时，集成它们，然后产生工作版本并用于集成测试。这样，集成软件的功能随迭代发展而向着计划迭代时设置的目标发展。您可能会争辩说每个工作版本本身就表示一个小型迭代，但不同之处在于所要求的计划和所执行评估的正式程度。每天构造工作版本在某些项目中可能是适合且方便的，但它们不能代表
    RUP 定义的迭代 － 除了可能有极小的一个人的项目。即使对于小型的多人项目（例如，五个人建立 10000 行代码），也很难在少于一周的时间内实现迭代。有关原因的说明，请参阅<img alt="" src="./../../../images/no_rup.gif">&#160;<a class="elementLinkWithUserText" href="./../../../pages_not_installed/pages_not_installed.html" guid="1.6567134597638413E-305">指南：软件开发计划</a>。
</p><!--EndFragment-->
<h3>
    <a id="Why iterate" name="Why iterate">为什么迭代？</a>
</h3>
<p>
    传统上，对项目进行组织来按顺序完成每个规程（每个规程有且仅有一次）。这会导致<b>瀑布式</b>生命周期：
</p>
<p align="center">
    <img height="86" alt="本图中显示从业务建模阶段到部署阶段的一次迭代" src="./../../../core.base_concepts/guidances/concepts/resources/waterfall.gif" width="368" />
</p>
<p>
    在实施后期，当首次建立产品并开始测试时，这通常会导致集成“堆积”。一直隐藏于整个分析、设计和实施过程中的问题浮现出来，然后项目就逐渐停下来，因为冗长的错误修正周期开始了。
</p>
<p>
    更灵活（并更少风险）的进展方法是几次通过各种开发规程，更好地理解需求，设计健壮的体系结构，发展开发组织并最终交付逐步完整的一系列实施。这被称为<b>迭代方式</b>生命周期。 将每次完成整个进程规程序列称为一次<b>迭代</b>。
</p>
<p align="center">
    <img height="211" alt="本图中显示三次连续的迭代，其中每次迭代都从业务建模阶段进行到部署阶段。" src="./../../../core.base_concepts/guidances/concepts/resources/iterative.gif" width="431" />
</p>
<p>
    因此，从开发的角度来看，软件生命周期是连续的<b>迭代</b>，通过迭代递增地开发软件。每次迭代都以得出可执行产品的<b>发行版</b>为结束。此产品可以是完整远景的子集，但从某个设计或用户角度来说是有用的。每个发行版都带有支持工作产品：发行版描述、用户文档、计划等，以及更新的系统模型。
</p>
<p>
    此迭代方法的主要结果是早前描述的<a class="elementLinkWithUserText" href="./../../../core.base_concepts/guidances/concepts/work_product_18CEEF8D.html" guid="4.804531471620803E-306">工作产品</a>，它们随时间的推移而发展和完善（如下图所示）。
</p>
<p align="center">
    <img height="306" alt="附带文本中描述的图。" src="./../../../core.base_concepts/guidances/concepts/resources/infoset.gif" width="359" border="0" />
</p>
<p class="picturetext" align="center">
    信息集随开发阶段演进。
</p>
<h4>
    次要里程碑
</h4>
<p>
    每次迭代以次要里程碑为结束，在此相对于此特定迭代的目标成功条件来评估迭代的结果。
</p></td>
</tr>
</table>
</div>
<table cellpadding="0" cellspacing="0" border="0" class="copyright">
<tr>
<td class="copyright"><p>
    &copy; &nbsp;Copyright IBM Corp.&nbsp;1987, 2005&nbsp;All Rights Reserved
</p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script language="JavaScript" type="text/javascript">
				contentPage.onload();
			</script>
</html>
